const koa = require("koa");
const app = new koa();
const Router = require("koa-router");
const router = new Router();
const fs = require("fs");
const path = require("path");
const cors = require("@koa/cors");

app.use(cors());
// 提供压缩后的文件下载
router.get("/downloadPdf", async (ctx) => {
  const filePath = path.join(__dirname, "test.pdf"); // 要压缩的文件
  const fileName = "zks.txt.gz"; // 下载的文件名

  ctx.set("Content-Disposition", `inline; filename=${fileName}`); // 设置下载文件名
  ctx.set("Content-Type", "application/pdf"); // 设置文件类型

  // 读取文件并使用 gzip 进行压缩
  ctx.body = fs.createReadStream(filePath);
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000);

// Content-Disposition
// 这个 HTTP 头部决定浏览器如何处理文件，它有两种主要值：
// inline 👉 直接在浏览器中打开
// attachment 👉 触发下载

// 常见的 Content-Type
// 文件类型	Content-Type 值	说明
// PDF	application/pdf	让浏览器直接预览 PDF
// Excel	application/vnd.ms-excel	兼容 .xls
// Excel (新版)	application/vnd.openxmlformats-officedocument.spreadsheetml.sheet	兼容 .xlsx
// Word (旧版)	application/msword	.doc
// Word (新版)	application/vnd.openxmlformats-officedocument.wordprocessingml.document	.docx
// JSON	application/json	返回 JSON 数据
// ZIP 文件	application/zip	ZIP 压缩包
// PNG 图片	image/png	PNG 图片
// JPEG 图片	image/jpeg	JPEG 图片
